package utils;

import interfacesFerrovia.DefsGlobais.TipoAtributo;

import java.util.Comparator;

import malhaFerroviaria.Ferrovia;
import mc747.Composicao;
import utils.Utils;

public class ComparaItens implements Comparator<String>{
	Ferrovia f = Ferrovia.getInstance();

	@Override
	public int compare(String idComp1, String idComp2){
		Utils u = new Utils();
		String idTrechoComp1 = (String) f.consultaAtributo(idComp1, TipoAtributo.ID_TR_CH_ATUAL);
		String idTrechoComp2 = (String) f.consultaAtributo(idComp2, TipoAtributo.ID_TR_CH_ATUAL);
		Float velAtualComp1 = (Float) f.consultaAtributo(idComp1, TipoAtributo.VEL_ATUAL);
		Float velAtualComp2 = (Float) f.consultaAtributo(idComp2, TipoAtributo.VEL_ATUAL);
		Float distComp1Chave;
		Float distComp2Chave;
		int t1;
		int t2;
		
		if((Boolean)f.consultaAtributo(idComp1, TipoAtributo.SENTIDO_ATUAL)) {
			distComp1Chave = (Float)f.consultaAtributo(idTrechoComp1, TipoAtributo.DISTANCIA) - (Float)f.consultaAtributo(idComp1, TipoAtributo.POSICAO_ATUAL);
		} else {
			distComp1Chave = (Float)f.consultaAtributo(idComp1, TipoAtributo.POSICAO_ATUAL);
		}
		
		if((Boolean)f.consultaAtributo(idComp2, TipoAtributo.SENTIDO_ATUAL)) {
			distComp2Chave = (Float)f.consultaAtributo(idTrechoComp2, TipoAtributo.DISTANCIA) - (Float)f.consultaAtributo(idComp2, TipoAtributo.POSICAO_ATUAL);
		} else {
			distComp2Chave = (Float)f.consultaAtributo(idComp2, TipoAtributo.POSICAO_ATUAL);
		}
		
		t1 = u.calculaTempoChegadaAB(velAtualComp1, distComp1Chave);
		t2 = u.calculaTempoChegadaAB(velAtualComp2, distComp2Chave);
		
		if(t1 < t2) {
			return -1;
		} else if(t1 > t2){
			return 1;
		}
		
		
		return 0;
	}

}
